//
//  KooCalendarWeekView.h
//  KooIEDUCalendarDemo
//
//  Created by nowcoder on 2024.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@class KooCalendarConfig;

/**
 * 日历星期头部视图
 */
@interface KooCalendarWeekView : UIView

// MARK: - Properties
/** 星期标签数组 */
@property (nonatomic, strong, readonly) NSArray<UILabel *> *weekLabels;

/** 容器视图 */
@property (nonatomic, strong, readonly) UIView *containerView;

/** 配置对象 */
@property (nonatomic, strong) KooCalendarConfig *config;

/** 星期文字数组 */
@property (nonatomic, strong) NSArray<NSString *> *weekTitles;

// MARK: - Initialization
/**
 * 使用默认配置初始化星期视图
 */
- (instancetype)init;

/**
 * 使用配置初始化星期视图
 * @param config 配置对象
 */
- (instancetype)initWithConfig:(KooCalendarConfig *)config;

/**
 * 使用自定义星期文字初始化
 * @param weekTitles 星期文字数组
 */
- (instancetype)initWithWeekTitles:(NSArray<NSString *> *)weekTitles;

/**
 * 使用配置和自定义星期文字初始化
 * @param config 配置对象
 * @param weekTitles 星期文字数组
 */
- (instancetype)initWithConfig:(KooCalendarConfig *)config weekTitles:(NSArray<NSString *> *)weekTitles;

// MARK: - Public Methods
/**
 * 更新星期文字
 * @param weekTitles 新的星期文字数组
 */
- (void)updateWeekTitles:(NSArray<NSString *> *)weekTitles;

/**
 * 更新星期视图的样式
 * @param config 新的配置对象
 */
- (void)updateWithConfig:(KooCalendarConfig *)config;

/**
 * 设置指定索引的星期标签样式
 * @param index 星期索引 (0-6)
 * @param textColor 文字颜色
 * @param font 字体
 */
- (void)setWeekLabelAtIndex:(NSInteger)index textColor:(UIColor *)textColor font:(UIFont *)font;

/**
 * 重置所有星期标签为默认样式
 */
- (void)resetAllWeekLabelsStyle;

// MARK: - Override Points
/**
 * 子类可重写此方法自定义UI创建
 */
- (void)setupUI;

/**
 * 子类可重写此方法自定义约束设置
 */
- (void)setupConstraints;

/**
 * 子类可重写此方法自定义样式更新
 */
- (void)updateAppearance;

// MARK: - Utility Methods
/**
 * 获取默认的星期文字数组
 * @return 默认星期文字数组
 */
+ (NSArray<NSString *> *)defaultWeekTitles;

/**
 * 获取英文星期文字数组
 * @return 英文星期文字数组
 */
+ (NSArray<NSString *> *)englishWeekTitles;

/**
 * 获取简化的星期文字数组
 * @return 简化星期文字数组
 */
+ (NSArray<NSString *> *)shortWeekTitles;

@end

NS_ASSUME_NONNULL_END 